import { Cloud, Db } from 'laf-client-sdk'
import { Sealed } from './annotation/Sealed'
import { LoggerFactory } from './log/LoggerFactory'

/**
 * 包装器配置
 * 明确 告知 cloud 对象所在
 * 一般覆盖 {@link #cloud()} 实现即可
 * @author LL
 * @date 2022-01-19 下午 02:55
 **/
@Sealed
export class LafWrapperConfig {

    /**
     * 日志 工厂, 所有包装器的日志都是从此获取 <br>
     * 设置日志等级:
     * <pre>
     *     // 大于等于设置的日志等级的日志才会输出
     *     Config.LoggerFactory.enableLevel = LoggerLevel.ALL
     * </pre>
     * 所有内部详细日志基本都在 {@link LoggerLevel.TRACE} 等级工作: 查询参数, 响应结果 等
     *
     * @type {LoggerFactory} 日志工厂
     * @see LoggerLevel
     */
    public static LoggerFactory: LoggerFactory = new LoggerFactory()

    /**
     * 所有包装器 如果需要 使用这里返回的 cloud 对象 (默认)
     * @return {Cloud}
     */
    public static cloud(): Cloud {
        return new Cloud({})
    }

    /**
     * 所有包装器使用这里返回的 database 对象 (默认)
     * @return {}
     */
    public static database(): Db {
        return this.cloud().database()
    }

}
